Online systems often store large amount of data for enterprises. An online system may store data for a single enterprise or for multiple enterprises. For example, a multi-tenant system stores data for multiple tenants, each tenant potentially representing an enterprise. The data stored by an online system for an enterprise includes records representing various entities associated with the entity, for example, user accounts, tasks and projects, documents, communications between users, media objects, and so on. Users of such online systems encounter a common problem when searching for information. Online systems typically provide search functionality, for example, based on an enterprise search engine. Online systems aim to effectively identify and rank search results representing information that a user is searching for, so as to present the user with the most relevant information.
However, conventional techniques used by online systems for identifying and ranking search results are either slow because they are very computation intensive or present poor quality results. For example, some online systems do not process all relevant information to rank data and therefore provide poorly ranked search results even though these online systems return the search results to the user fast. Poorly ranked search results make it difficult for a user to find the relevant information since the user is forced to manually review all search results to identify the relevant ones. On the other hand, online systems that consider all relevant information for ranking search results require significant computational resources, especially given the large amount of data stored by online systems. Therefore, conventional techniques for ranking search results are either very computationally intensive and therefore slow, or they provide poorly ranked search results, thereby providing a poor user experience.